<?php
class Consultas extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library(
                array(
                    'session',
                    'r_session',
                    'form_validation',
                    'r_currency'
                ));
        $this->load->helper(
                array(
                    'url'
                ));
        $this->load->model(
                array(
                    'proveedores_model',
                    'consultas_model',
                    'monedas_model',
                    'articulos_model',
                    'productos_model',
                    'usuarios_model',
                    'marcas_model'
                ));
        $this->r_session->check($this->session->all_userdata());
    }
    
    public function index() {
        $session = $this->session->all_userdata();
        $session['title'] = 'Listar Consultas';
        $data['consultas'] = $this->consultas_model->get_consultas();
        
        foreach ($data['consultas'] as $key => $value) {
            $data['consultas'][$key]['proveedor'] = $this->proveedores_model->get_proveedor_por_id($value['proveedor']);
            $data['consultas'][$key]['usuario'] = $this->usuarios_model->get_usuario_por_id($value['idusuario']);
            $data['consultas'][$key]['items'] = $this->consultas_model->get_items_de_una_consulta($value['idconsulta']);
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/index', $data);
        $this->load->view('layout/footer');
    }
    
    public function borrar_item($idconsulta, $iditem) {
        $this->consultas_model->delete_item($iditem);
        redirect('/consultas/agregar_items/'.$idconsulta);
    }
    
    public function agregar() {
        $session = $this->session->all_userdata();
        $session['title'] = 'Agregar Consulta';
        $data['proveedores'] = $this->proveedores_model->get_proveedores();
        $data['monedas'] = $this->monedas_model->get_monedas();
        
        $this->form_validation->set_rules('fecha', 'Fecha', 'required');
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $datos = array(
                'proveedor' => $this->input->post('proveedor'),
                'fecha' => $this->input->post('fecha'),
                'moneda' => $this->input->post('moneda'),
                'observaciones' => $this->input->post('observaciones'),
                'idusuario' => $session['SID']
            );
            
            $id = $this->consultas_model->set_consulta($datos);
            
            redirect('/consultas/agregar_items/'.$id, 'refresh');
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/agregar', $data);
        $this->load->view('layout/footer');
    }
    
    public function agregar_items($idconsulta) {
        $session = $this->session->all_userdata();
        $session['title'] = 'Agregar Items a la Consulta';
        $data['consulta'] = $this->consultas_model->get_consulta_por_id($idconsulta);
        $data['consulta']['proveedor'] = $this->proveedores_model->get_proveedor_por_id($data['consulta']['proveedor']);
        $data['consulta']['moneda'] = $this->monedas_model->get_moneda_por_id($data['consulta']['moneda']);
        $data['articulos'] = $this->articulos_model->get_articulos();
        
        foreach ($data['articulos'] as $key => $value) {
            $data['articulos'][$key]['producto'] = $this->productos_model->get_producto_por_id($value['idProducto']);
            $data['articulos'][$key]['marca'] = $this->marcas_model->get_marca_por_id($value['idMarca']);
        }
        
        $this->form_validation->set_rules('cantidad', 'Cantidad', 'required|integer');
        $this->form_validation->set_rules('precio', 'Precio', 'required|numeric');
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $datos = array(
                'idconsulta' => $idconsulta,
                'cantidad' => $this->input->post('cantidad'),
                'idarticulo' => $this->input->post('articulo'),
                'precio' => $this->input->post('precio'),
                'entrega' => $this->input->post('entrega'),
                'observaciones' => $this->input->post('observaciones')
            );
            
            $this->consultas_model->set_item_a_consulta($datos);
        }
        
        $data['items'] = $this->consultas_model->get_items_de_una_consulta($idconsulta);
        foreach ($data['items'] as $key => $value) {
            $data['items'][$key]['articulo'] = $this->articulos_model->get_articulo_por_id($value['idarticulo']);
            $data['items'][$key]['articulo']['producto'] = $this->productos_model->get_producto_por_id($data['items'][$key]['articulo']['idProducto']);
            $data['items'][$key]['articulo']['marca'] = $this->marcas_model->get_marca_por_id($data['items'][$key]['articulo']['idMarca']);
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/agregar_items', $data);
        $this->load->view('layout/footer');
    }
    
    public function update_item($iditem) {
        $session = $this->session->all_userdata();
        $session['title'] = 'Modificar Item de Consulta';
        $data['item'] = $this->consultas_model->get_item_por_id($iditem);
        $data['item']['articulo'] = $this->articulos_model->get_articulo_por_id($data['item']['idarticulo']);
        $data['articulos'] = $this->articulos_model->get_articulos();
        
        foreach ($data['articulos'] as $key => $value) {
            $data['articulos'][$key]['producto'] = $this->productos_model->get_producto_por_id($value['idProducto']);
        }
        
        $this->form_validation->set_rules('cantidad', 'Cantidad', 'required|integer');
        $this->form_validation->set_rules('precio', 'Precio', 'required|numeric');
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $datos = array(
                'cantidad' => $this->input->post('cantidad'),
                'idarticulo' => $this->input->post('articulo'),
                'precio' => $this->input->post('precio'),
                'entrega' => $this->input->post('entrega'),
                'observaciones' => $this->input->post('observaciones')
            );
            
            $this->consultas_model->update_item($datos, $iditem);
            
            redirect('/consultas/agregar_items/'.$data['item']['idconsulta']);
        }
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/update_item', $data);
        $this->load->view('layout/footer');
    }
    
    public function visualizar($idconsulta) {
        $session = $this->session->all_userdata();
        $session['title'] = 'Visualizar Consulta';
        $data['consulta'] = $this->consultas_model->get_consulta_por_id($idconsulta);
        $data['consulta']['proveedor'] = $this->proveedores_model->get_proveedor_por_id($data['consulta']['proveedor']);
        $data['consulta']['moneda'] = $this->monedas_model->get_moneda_por_id($data['consulta']['moneda']);
        $data['articulos'] = $this->articulos_model->get_articulos();
        
        foreach ($data['articulos'] as $key => $value) {
            $data['articulos'][$key]['producto'] = $this->productos_model->get_producto_por_id($value['idProducto']);
        }
        
        $data['items'] = $this->consultas_model->get_items_de_una_consulta($idconsulta);
        foreach ($data['items'] as $key => $value) {
            $data['items'][$key]['articulo'] = $this->articulos_model->get_articulo_por_id($value['idarticulo']);
            $data['items'][$key]['articulo']['producto'] = $this->productos_model->get_producto_por_id($data['items'][$key]['articulo']['idProducto']);
            $data['items'][$key]['articulo']['marca'] = $this->marcas_model->get_marca_por_id($data['items'][$key]['articulo']['idMarca']);
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/visualizar', $data);
        $this->load->view('layout/footer');
    }
    
    public function eliminar($idconsulta) {
        $this->consultas_model->delete_consulta($idconsulta);
        
        redirect('/consultas/', 'refresh');
    }
    
    public function listado_por_articulo($idarticulo = null) {
        $session = $this->session->all_userdata();
        $session['title'] = 'Listado por Artículo';
        $data['articulos'] = $this->articulos_model->get_articulos();
        
        foreach ($data['articulos'] as $key => $value) {
            $data['articulos'][$key]['producto'] = $this->productos_model->get_producto_por_id($value['idProducto']);
            $data['articulos'][$key]['marca'] = $this->marcas_model->get_marca_por_id($value['idMarca']);
        }
        
        if($idarticulo != null) {
            $data['items'] = $this->consultas_model->get_items_por_articulo($idarticulo);
            
            foreach ($data['items'] as $key => $value) {
                $data['items'][$key]['consulta'] = $this->consultas_model->get_consulta_por_id($value['idconsulta']);
                $data['items'][$key]['proveedor'] = $this->proveedores_model->get_proveedor_por_id($data['items'][$key]['consulta']['proveedor']);
                $data['items'][$key]['articulo'] = $this->articulos_model->get_articulo_por_id($value['idarticulo']);
                $data['items'][$key]['producto'] = $this->productos_model->get_producto_por_id($data['items'][$key]['articulo']['idProducto']);
                $data['items'][$key]['moneda'] = $this->monedas_model->get_moneda_por_id($data['items'][$key]['consulta']['moneda']);
                $data['items'][$key]['marca'] = $this->marcas_model->get_marca_por_id($data['items'][$key]['articulo']['idMarca']);
                //$data['items'][$key]['currency'] = $this->r_currency->get_dolares($value['precio'], $data['items'][$key]['moneda']['currency']);
                $data['items'][$key]['currency'] = $value['precio'] * $this->r_currency->get_cambio($data['items'][$key]['moneda']['currency']);
            }
        }
        
        $this->form_validation->set_rules('articulo', 'Articulo', 'required');
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $data['items'] = $this->consultas_model->get_items_por_articulo($this->input->post('articulo'));
            
            foreach ($data['items'] as $key => $value) {
                $data['items'][$key]['consulta'] = $this->consultas_model->get_consulta_por_id($value['idconsulta']);
                $data['items'][$key]['proveedor'] = $this->proveedores_model->get_proveedor_por_id($data['items'][$key]['consulta']['proveedor']);
                $data['items'][$key]['articulo'] = $this->articulos_model->get_articulo_por_id($value['idarticulo']);
                $data['items'][$key]['producto'] = $this->productos_model->get_producto_por_id($data['items'][$key]['articulo']['idProducto']);
                $data['items'][$key]['moneda'] = $this->monedas_model->get_moneda_por_id($data['items'][$key]['consulta']['moneda']);
                $data['items'][$key]['marca'] = $this->marcas_model->get_marca_por_id($data['items'][$key]['articulo']['idMarca']);
                //$data['items'][$key]['currency'] = $this->r_currency->get_dolares($value['precio'], $data['items'][$key]['moneda']['currency']);
                $data['items'][$key]['currency'] = $value['precio'] * $this->r_currency->get_cambio($data['items'][$key]['moneda']['currency']);
            }
        }
        
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/listado_por_articulo', $data);
        $this->load->view('layout/footer');
    }
    
    public function listado_por_proveedor() {
        $session = $this->session->all_userdata();
        $session['title'] = 'Listado por Proveedor';
        
        $data['proveedores'] = $this->proveedores_model->get_proveedores();
        
        $this->form_validation->set_rules('proveedor', 'Proveedor', 'required');
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $idproveedor = $this->input->post('proveedor');
            $data['prov'] = $this->proveedores_model->get_proveedor_por_id($idproveedor);
            $data['items'] = $this->consultas_model->get_items_por_proveedor($idproveedor);
            foreach($data['items'] as $key => $value) {
                $data['items'][$key]['articulo'] = $this->articulos_model->get_articulo_por_id($value['idarticulo']);
                $data['items'][$key]['moneda'] = $this->monedas_model->get_moneda_por_id($value['moneda']);
                $data['items'][$key]['marca'] = $this->marcas_model->get_marca_por_id($data['items'][$key]['articulo']['idMarca']);
            }
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('consultas/listado_por_proveedor', $data);
        $this->load->view('layout/footer');
    }
}
?>
